在本地提交一个spark job,出现如下错误
1 | WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient memory |
在网上搜了一下,出现这种错误一般有两种原因,
- 内存不足。
- 主机名和IP配置不正确。
检查了一下,我只是跑一个简单的测试程序,内存是完全够用的,我也在spark web console上确认了内存是足够的。
为了确认主机名和IP的问题,我把SparkContext的内容打印了出来
1 | spark.app.id=app-20150806145030-0003 |
这里显示我的IP是192.168.56.1,但实际上这是我的windows虚拟机的IP地址,而我本机的IP地址是192.168.100.151.
在提交spark job之后,server端需要反馈进度给driver host,所以反馈消息被发送到了虚拟机上而本机并没有收到,导致这个异常的发生。所以如果你的机器上装有虚拟机,在运行spark程序之前,最好用ifconfig